package com.qkl.xiatang.app.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkl.xiatang.app.dto.pond.*;
import com.qkl.xiatang.app.entity.AppURL;
import com.qkl.xiatang.app.entity.pond.PondEntity;
import com.qkl.xiatang.app.entity.pond.PondGroupDetail;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface PondManagerMapper extends BaseMapper<PondEntity> {

    /**
     * 添加塘分组明细
     * @param detailList
     */
    void addPondGroupDetail(@Param("detailList") List<PondGroupDetail> detailList);

    /**
     * 根据塘id统计
     * @param pondIdList
     *  @param type
     * @return
     */

    CountPondAndGruopDetail countPondAndGruopDetail(@Param("pondIdList") List<String> pondIdList,@Param("type") Integer type);

    /**
     *  查询塘(棚)列表
     * @param companyId
     * @param pondGroupId
     * @param type
     * @return
     */
    List<PondListOutDTO> queryPondList(@Param("companyId") String companyId,@Param("pondGroupId") String pondGroupId,@Param("type") Integer type);

    /**
     * 查询塘(棚)分组列表
     * @param companyId
     * @param type
     * @return
     */
    List<Map<String,Object>> queryPondGroupList(@Param("companyId") String companyId,@Param("type") Integer type);

    /**
     * 删除 塘分组明细
     * @param pondGroupId
     * @param pondIdList
     * @param type
     * @param companyId
     * @return
     */
    Integer deletePondGruopDetail(@Param("pondGroupId") String pondGroupId, @Param("pondIdList") List<String> pondIdList,@Param("type") Integer type,@Param("companyId") String companyId);


    List<PondGroupDTO> queryPondIdByGroup(@Param("companyId") String companyId, @Param("groupIdList") List<String> groupIdList);


    /**
     * 搜索塘列表
     * @param companyId
     * @param keywords
     * @return
     */
    List<Map<String,Object>> searchPondList(@Param("companyId") String companyId, @Param("keywords") String keywords);

    /**
     * 查询塘口名称
     * @param pondIdList
     * @return
     */
    List<String> queryPondNames(@Param("pondIdList") List<String> pondIdList);


    /**
     * 查询喂料任务塘口名称
     * @param param
     * @return
     */
    List<QueryPondNamesOutDTO> queryFeedPondNames(QueryPondNamesInDTO param);

    /**
     * 查询动保任务塘口名称
     * @param param
     * @return
     */
    List<QueryPondNamesOutDTO> queryZooPondNames(QueryPondNamesInDTO param);


    /**
     * 未喂料塘口名
     * @param param
     * @return
     */
    List<QueryPondNamesOutDTO> queryUnfeededPondNames(QueryPondNamesInDTO param);

    /**
     * 未查料台塘口名
     * @param param
     * @return
     */
    List<QueryPondNamesOutDTO> queryUncheckedPondNames(QueryPondNamesInDTO param);

    /**
     * 塘口名列表
     * @param pondIdList
     * @return
     */
    List<String> queryPondNameList( @Param("pondIdList") Set<String> pondIdList);

    /**
     * 未配料塘口名列表
     * @param param
     * @return
     */
    List<PondEntity> queryNotAllocPondNames(QueryPondNamesInDTO param);

    /**
     * 查询塘号信息 并且查询对应的公司名称
     * @param id
     * @return
     */
    PondEntity selectOnePondAndCompanyName(@Param("id") String id);

}
